if 是一個用於執行條件判斷的控制結構,如果條件成立,就會執行 if 後面的大括號 ({}
) 內的程式區塊,否則就會忽略該程式區塊繼續執行後續的程式。
if 條件式{
若條件式為ture,執行程式區塊
}
package main
import "fmt"
func main() {
if true {
fmt.Println("Go")
}
}
執行結果:
Go
如果改成 false,就不會印出任何東西。
package main
import "fmt"
func main(){
num := 10
if (num < 20){
fmt.Println("Hi~~~~~")
}
}
執行結果:
Hi~~~~~
if-else
是用來處理條件分支的結構,這樣就可以根據條件的 true
/false
去執行不同的程式碼。
if 條件式{
若條件式為ture,執行程式區塊
}else{
若條件式為false,執行程式區塊
}
package main
import "fmt"
func main() {
if false {
fmt.Println("Go")
}else{
fmt.Println("Not Go")
}
}
執行結果:
Not Go
package main
import "fmt"
func main(){
var num int
num = 5
if num > 10{
fmt.Println("Hello")
}else{
fmt.Println("Golang")
}
}
當 num > 10 時:
執行結果:
Hello
當 num < 10 時:
執行結果:
Golang
如果有多種情況需要判斷,可以用以下方式來處理。
if 條件式一 {
若條件式一為 ture,執行程式區塊
}else if 條件式二 {
若條件式二為 ture,執行程式區塊
}else{
若條件式為 false,執行程式區塊
}
小情境:
ATM 領錢,低於 100 以及高於 10000 不給領。
package main
import "fmt"
func main() {
var money int
fmt.Println("請輸入金額:")
fmt.Scanln(&money)
if money < 100 {
fmt.Println("Too Few")
} else if money <= 10000 {
fmt.Println("OK!!!")
} else {
fmt.Println("Too Much!!!")
}
fmt.Println("Done!!!")
}
執行 go build main.go
$ ./main.go
請輸入金額:
50
Too Few
Done!!!
當一次要多次比較同一個變數,可以用 switch - case
。
給一個小情境,當晴天(1)就出去玩,陰天(2)去百貨公司,下雨(3)去地下街,颱風天待在家裡。
package main
import "fmt"
func main(){
weather := 2
switch weather {
case 1:
fmt.Println("出去玩!")
case 2:
fmt.Println("去百貨公司!!")
case 3:
fmt.Println("去地下街!!!")
default:
fmt.Println("待在家!!!!")
}
}
執行結果:
去百貨公司!!
default 的功能類似 else
,另外在 Go,使用 switch - case
不需要搭配 break
。
情境二: 晴天跟陰天都出去玩,下雨天跟颱風天都待在家
package main
import "fmt"
func main(){
weather := 2
switch weather {
case 1:
fmt.Println("出去玩!")
case 2:
fmt.Println("出去玩!")
case 3:
fmt.Println("待在家!!")
default:
fmt.Println("待在家!!")
}
}
也可以這樣表示:
package main
import "fmt"
func main(){
num := 2
switch num {
case 1,2:
fmt.Println("出去玩!")
case 3,4:
fmt.Println("待在家!!")
}
}
昨天在講比較運算及邏輯運算時都有提到布林值,今天我再細講布林值。
在做比較時,>
, ==
, <
, >=
, <=
,而這些會產生值,也就是 true
, false
,而我們稱這個值為布林值(boolean)。
package main
import "fmt"
func main(){
var a bool
a = true
if a {
fmt.Println("a is true")
}else{
fmt.Println("a is false")
}
}
執行結果:
a is true
如果將 a = true
改成 a = false
,那執行的的結果就會是 a is false
來點簡單的條件判斷:
package main
import "fmt"
func main(){
var a bool
a = 5 > 7
if a {
fmt.Println("it is right!!!")
}else {
fmt.Println("it is wrong!!!")
}
}
執行結果:
it is wrong!!!
會出現這樣的結果是因為這時的 a
做了比較,並且得到 false
。5 > 7
就是一種比較的方式,所得到的值就會是布林值。
主要分為 NOT
, AND
, OR
。
簡單來說,就是來顛倒是非的,為甚麼這樣說,因為他會把 true
變 false
,false
變 true
。
那要怎麼表示呢?
只要在布林變數前加上 !
:
package main
import "fmt"
func main(){
a := true
fmt.Println(!a)
fmt.Printf("%t", !a)
}
執行結果:
false
false
布林變數可以直接印出,若要用 Printf 印出可以用 %t
是指 true
。
那為甚麼不是用 %b
,因為 b 被當作 binary 拿去印二進制了。
兩件事都是對的,結果也會是對的,可以把他想成是「而且」。
但我比較喜歡用數學的方式去記。
大家都學過乘法吧!
0 x 0 = 0
1 x 0 = 0
0 x 1 = 0
1 x 1 = 1
我們把 0 當作 false
,1 當作 true
:
false x false = false
true x false = flase
false x true = false
true x true = true
那在程式中要怎麼表示,除了python,Go及大多數的程式語言,是用&&
來表示。
package main
import "fmt"
func main(){
fmt.Println(false && false)
fmt.Println(true && false)
fmt.Println(false && true)
fmt.Println(true && true)
}
執行結果:
false
false
false
true
兩件事只要一個是對的,結果就會是對的,可以把他想成是「或者」。
用數學的方式來講解,大家都學過加法吧!
0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 1
我們把 0 當作 false
,1 當作 true
:
false + false = false
true + false = true
false + true = true
true + true = true
那在程式中要怎麼表示,Go及大多數的程式語言,是用||
來表示。
package main
import "fmt"
func main(){
fmt.Println(false || false)
fmt.Println(true || false)
fmt.Println(false || true)
fmt.Println(true || true)
}
執行結果:
false
true
true
true